<?php
/**
 * <https://y.st./>
 * Copyright © 2019 Alex Yst <mailto:copyright@y.st>
 * 
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program. If not, see <https://www.gnu.org./licenses/>.
**/

$xhtml = array(
	'<{title}>' => 'Crystal mese was terrible when first introduced.',
	'takedown' => '2017-11-01',
	'<{body}>' => <<<END
<img src="/img/CC_BY-SA_4.0/y.st./weblog/2019/07/04.jpg" alt="A path to the river under the bridge" class="framed-centred-image" width="800" height="480"/>
<section id="diet">
	<h2>Dietary intake</h2>
	<p>
		For breakfast, I had 55 grams of cereal and 122 grams of soy milk.
		For lunch, I had 331 grams of potato, carrot, onion, and Italian sausage stew and 89 grams of cranberry sauce.
		For dinner, I had 218 grams of the same stew and 134 grams of cranberry sauce.
		After a three-hour bike ride, I also had a 376-gram smoothie.
	</p>
</section>
<section id="drudgery">
	<h2>Drudgery</h2>
	<p>
		My discussion post for the day:
	</p>
	<blockquote>
		<p>
			As our reading material told us in Unit 1, $a[HTML] can be embedded in a mobile application in order to provide updatable content.
			As the textbook informed us, mobile applications can&apos;t automatically update to new versions.
			The user has to install updates themselves (Balaz, A., Bartels, B., Bloor, R., Churchill, D., Graf, O., Gülle, R., Harty, J., Heubel, B., Iliescu, O., Johnson, G., Jonsson, A., Kapetanakis, M., Koch, M., Messerschmidt, T.,  Readfern-Gray, G., Repty, A., Ross, M., Rouffineau, T., Schmidt, A., Shuqair, M.,  Tabor, M., Thain, I., and Virkus, R., 2012).
			This is a very good thing for users; your computer shouldn&apos;t be automatically changing its software on you!
			(So-called &quot;smartphones&quot; are telephones in name only; they&apos;re not actually telephones at all, but pocket-sized computers, which is what makes them so useful and makes them able to run arbitrary software.)
			Some types of applications present data to the user that needs to be updated to remain useful.
			I feel like our assignment for last week presented a pretty good example of this: a weather-forecasting application.
			What if your weather-forecasting application always showed you the expected weather for a specific range of dates?
			After those dates had come and gone, the application would need to be updated with a new copy from your software repository.
			How ridiculous.
			While the weather-forecasting application probably doesn&apos;t use $a[HTML], the idea behind it is still the same: it fetches information from the network and displays it within the application.
			$a[HTML] provides a simple markup language for formatting content, but it&apos;s not the $a[HTML] itself that the really useful part when it comes to $a[HTML] that&apos;s embedded in mobile applications.
			The focus shouldn&apos;t be on the $a[HTML] itself, but on the network access used to update the $a[HTML] that gets rendered.
			Just like how you don&apos;t need to update your Web browser in your system&apos;s repository every time you want to load information from a website that has changed since your last update, these Internet-enabled applications allow you to see new information without updating your software.
		</p>
		<p>
			As for the problems with such a system, we can see very clearly one of the problems.
			If no network connection is available, the application can&apos;t fetch the data it needs from the Web.
			Your application will have nothing to display, and will be useless.
			One easy workaround could be to store the data last retrieved when the application was last used with Internet connectivity.
			That would allow you to display somewhat-recent information instead of nothing, which could satisfy users in some cases, though some will still be looking for the latest information, which your application won&apos;t be able to offer without network connectivity.
			Is this really a disadvantage over applications that store their data statically and must be updated?
			I&apos;d argue that it&apos;s not really, as long as you&apos;re storing the latest data the application was able to grab from the network.
			I mean, applications with statically-held data need to be updated to get the latest data, and that too requires a network connection.
		</p>
		<p>
			Another issue is network use charges and limitations.
			I&apos;ve never been on one of those networks that tries to screw you over with usage overage charges.
			Those are a trap, as are postpaid plans in general, and I&apos;m not falling for them.
			When you&apos;re on prepaid service, there&apos;s often a usage cap instead of overage charges, which is much nicer.
			However, I was once on a plan that had a two-gigabyte data transfer per month limit to save some money.
			Applications that always check the Internet for the latest data to display would have eaten into that data use limit pretty badly, so I couldn&apos;t use that network transfer for something more useful such as email and looking things up on the Web when I needed information about something.
			For people with overage charges built into their plan, a network-enabled application that pulls $a[HTML] files from the Web could end up being pretty costly for your user.
		</p>
		<div class="APA_references">
			<h3>References:</h3>
			<p>
				Balaz, A., Bartels, B., Bloor, R., Churchill, D., Graf, O., Gülle, R., Harty, J., Heubel, B., Iliescu, O., Johnson, G., Jonsson, A., Kapetanakis, M., Koch, M., Messerschmidt, T.,  Readfern-Gray, G., Repty, A., Ross, M., Rouffineau, T., Schmidt, A., Shuqair, M.,  Tabor, M., Thain, I., and Virkus, R.
				(2012).
				<a href="https://my.uopeople.edu/mod/resource/view.php?id=178262">Mobile Developers Guide to the Galaxy, 11th edition</a>. Retrieved from <code>https://my.uopeople.edu/mod/resource/view.php?id=178262</code>.
			</p>
		</div>
	</blockquote>
</section>
<section id="Minetest">
	<h2>Minetest</h2>
	<img src="/img/CC_BY-SA_3.0/minetest.net./weblog/2019/07/04.png" alt="In most cases, page 3 can have a maximum of three inventory slots" class="framed-centred-image" width="1024" height="600"/>
	<p>
		I decided to use tabs instead of buttons for chain-locked box inventory navigation.
		It looks a little less clean, but in cases in which the player has at least six pages, it doesn&apos;t require navigating through other pages first, while the button method does, due to only being able to cleanly fit four buttons on the page.
		(If we don&apos;t include a button for the page the user is currently on, that leaves four button slots open for other pages, meaning it&apos;s only the sixth page that requires navigation through other pages to get to.)
		I can fit a lot more tabs on the screen because they&apos;re smaller, but also, the tab bar can scroll client-side, so they don&apos;t need to request the next several page options from the server.
		In all practicality, a user won&apos;t have more than four pages, but that&apos;s not a hard-coded limit, and I don&apos;t want usability hampered once six have been reached.
	</p>
	<p>
		When I&apos;m doing mindless work, such as at my day job or when I&apos;m biking somewhere I&apos;m familiar with the route to, I like to try to plan features for Building Up From Zero.
		However, as I said before, the release I&apos;m working on now doesn&apos;t need further contemplation.
		All I need to do is throw more code at it, see how that code reacts, debug, and react to whatever I see going on there.
		There&apos;s nothing left that actually needs the kind of thought I can give while I&apos;m away from the keyboard.
		So I looked into mese, so I can start thinking about the 0.1.0 release properly.
	</p>
	<p>
		I forgot how stupid crystal mese was at first.
		VanessaE was spearheading the effort to get our beloved classic mese replaces, because I guess it wasn&apos;t immersive enough for her.
		Many people got on board, so I guess it wasn&apos;t enough for them, either.
		It was a part of Minetest history and a part of Minetest&apos;s personality, and it was just lost ...
		But anyway, crystal mese itself, ignoring what it was designed to remove from the game, wasn&apos;t a bad idea.
		However, it was poorly planned and poorly executed.
		Over and over, I pointed out flaws in the implementation, and over and over my concerns were written off.
		Sometimes, VanessaE would come up with some other logic as to why the thing I should be concerned about should be fixed, but my reasoning was always written off as invalid and the problems I&apos;d bring up written off as not actually being problems.
		In the end though, everything terrible about crystal mese aside from the fact that it replaced classic mese, was fixed before release.
		That is, except for one thing: crystal mese could be crafted into crystal mese fragments, an entirely useless item.
		They couldn&apos;t even be crafted back into full mese crystals like they can today.
		I begged for the recipe for crafting crystal mese fragments to be crafted back into crystal mese to be added.
		I explained how in the vanilla game, these fragments were entirely useless, and that it didn&apos;t make sense to have them without allowing them to be turned back into usable items.
		But no.
		VanessaE and others just kept insisting that they weren&apos;t useless, and that third-party mods could use them for various things.
		Not everyone plays with third-party mods installed though, and those that do, don&apos;t necessarily have any that make use of crystal mese shards.
		And that ignores the fact that Minetest Game is a game, not a support mod.
		While it should provide tools for mods to use, as that&apos;s part of its goal, it shouldn&apos;t add broken mechanics that only actually function when a mod comes through and fixes them.
	</p>
	<p>
		On my server, I actually modded away the recipe for crystal mese fragments.
		The $a[API] didn&apos;t allow recipes to be removed at the time, but it allowed them to be overwritten with other recipes.
		I made it so putting one crystal mese in the crafting grid gave an output of one crystal mese instead of nine worthless crystal mese fragments.
		Strangely, I had one player that was upset by this.
		They insisted that crystal mese fragments weren&apos;t worthless, and could be used as currency.
		Who&apos;s going to trade for a worthless item though?
		Certainly not me.
		Why not instead use something of actual value for currency, such as full mese crystals or iron?
		I feel though like it was this sort of idiocy that allowed the fragments to be put into the game in such a worthless state to begin with though.
		I mean, I don&apos;t think VanessaE&apos;s an idiot.
		She was just so focussed on mods that she couldn&apos;t see the need to make the unmodded game functional, nor could she see that not all mods would even touch her beloved crystal mese fragments.
		But she wasn&apos;t working in a vacuum.
		My understanding is that over half the Minetest community was on her side, and none of them were pointing out the flaws in her implementation.
		I was the only one, and the fact that I was on the side of keeping classic mese didn&apos;t help my cause in trying to get crystal mese&apos;s problems fixed.
	</p>
	<p>
		So anyway, crystal mese fragments, which were literally trash because of the way they were implemented, were added to the game.
		Now let&apos;s talk about the positive things crystal mese brought to the table in the version it was introduced in.
		Oh, wait.
		It <strong>*didn&apos;t*</strong> bring anything positive to the game.
		Crystal mese really turned itself around in later versions, and now provides material for some irreplacable nodes, such as mese lamps and powered cart rails.
		In version 0.4.5, when crystal mese was introduced, it could be crafted into mese blocks, which existed before, but now they didn&apos;t have the classic texture any more.
		They could be crafted into mese picks, which again, already existed in the game prior.
		And they could be crafted into worthless shards.
		That was the extent of what crystal mese could do when it was first added.
		It literally added nothing positive to the game at all.
	</p>
	<p>
		I&apos;d jokingly thought about making crystal mese an outright replacement for the sand element in my past attempts to build element-themed mods.
		The sand element goes away, then a bit later, crystal mese shows up to replace it.
		I never actually went with that idea though, because I always thought that the mese element was so much better than sand, which was literally the worst element.
		It turns out though that crystal mese being a replacement for the sand element wasn&apos;t too far off from reality though.
		When introduced, crystal mese did fill a similar role: one of pointless destruction.
		Mese was quite a stupid element at first.
		It&apos;s come a long way since then, but the nodes I theme after elements are based on my impressions of them in the version of the game they came from initially.
		The mese-themed node will probably not be much of a positive thing.
	</p>
	<p>
		That said, the difference between the sand element and the mese element is the fact that that which makes sand an element is what makes it so stupid.
		Gaining any points toward your sand elemental level necessarily requires that you embrace sand&apos;s idiocy and vaporise a bunch of sand.
		On the other hand, mese&apos;s elemental status is no different than, say, iron&apos;s or coal&apos;s.
		That means you can choose not to use the worst part of mese; you can just choose not to craft crystal mese fragments.
		For that reason, I might make the mese-themed nodes positive after all.
		Mese picks were still the best tools at this point in the game, being a combination of a shovel, an axe, pick, and sword.
		There weren&apos;t separate mese tools.
		Mese picks just did it all, and did it all better than any other tool available at the time.
	</p>
	<p>
		There have been three elements I&apos;ve not liked in the past.
		The main one was sand.
		I&apos;m not sure if my concerns were a part of why it was removed from teh game, but I&apos;d expressed my concerns with how it takes four sand to craft sandstone, but mining sandstone dropped one sand many times.
		Where do the other three sand go?
		They seem to just vanish into the void.
		Second, we have crystal mese.
		I think I&apos;ve made my case on that well enough today, so I&apos;ll move on.
		Next was copper.
		It served no purpose at first unless bound with steel.
		Iron was always my favourite element, and its benefit of allowing players to lock up their valuables became nullified when bound to copper in the form of bronze, which could only be used to craft tools in the beginning.
		Copper was useless if you weren&apos;t willing to give up the most valuable material in the game to pour some usefulness into it.
		That was fixed when tin was added, but also, copper can now be crafted into blocks too.
		I guess I&apos;ve never really liked flint either, because it can&apos;t be used to craft nodes, and crafting it into a tool likewise requires crafting valuable steel into that same tool, but I&apos;ve also not thought much about flint until I started working on elementally-themed mods.
	</p>
</section>
<section id="biking">
	<h2>Biking</h2>
	<p>
		Today was Independence Day in my country, so I figured the $a[EUGLUG] meeting would be called off.
		I didn&apos;t know for sure though, and I&apos;m happy I didn&apos;t, so I biked over to Eugene to check.
		Sure enough, no one was there and the usually-unlocked garage door was locked.
		If I&apos;d known the meeting wasn&apos;t going to happen though, I wouldn&apos;t&apos;ve biked over.
		I&apos;m fat.
		I need the exercise.
		Not knowing for sure until I got there got me my three hours of biking in for the day.
	</p>
	<p>
		I could make it there or back in one hour if I hurried, but I went at a more-leisurely pace.
		I also usually have three hours to rest between when I bike there and when I bike back, so on the way back, I was tired and travelling even slower.
		That&apos;s fine though.
		As long as I keep up the pace - as in keep biking long distances, not as in remain at full speed for the whole journey - I don&apos;t have to be fat for the rest of my live.
		I&apos;m making good progress.
		I just need to press onward.
	</p>
	<p>
		Humans are such slobs though.
		Everyone aside from me, as I don&apos;t celebrate holidays, was out partying.
		Many of them were drinking, and I found no less than thirteen cans and bottle that had just been left on the riverside path.
		And I didn&apos;t even traverse the whole path.
		Wow.
		Just wow.
	</p>
</section>
END
);
